`timescale 1ns / 1ps
/////////////////////////////////////////////////////////////////////////////
////                                                                     ////
//// Instituto Tecnologico de Costa Rica                                 ////
////                                                                     ////
//// Test Bench Sincronizador                                            ////
////                                                                     ////
//// Este archivo es parte del proyecto: Control de luces de semaforo    ////
//// http://repositorio-charmander.googlecode.com/svn/trunk/             ////
////                                                                     ////
//// Descripcion                                                         ////
//// Implementacion de un control de luces de semaforo como un proyecto  ////
//// del curso de Taller de Diseño Logico.                               ////
////                                                                     ////
//// Funcionamiento:                                                     ////
//// - Modulo de test bench del sincronizador                            ////
////                                                                     ////
////                                                                     ////                                    
//// Autores:                                                            ////
//// - Gia Chen, kathya0812@gmail.com                                    ////
////   Edgar Rojas, edtec217@gmail.com                                   ////
////                                                                     ////
/////////////////////////////////////////////////////////////////////////////

module Sincronizador_tb;

	// Inputs
	reg _clk_i;
	reg sensor_i;
	reg walk_request_i;
	reg reprogram_i;
	reg _rst_i;

	// Outputs
	wire sensor_sync_o;
	wire WR_sync_o;
	wire prog_sync_o;
	wire _sync_rst_o;

	// Instantiate the Unit Under Test (UUT)
	Sincronizador uut (
		._clk_i(_clk_i), 
		.sensor_i(sensor_i), 
		.sensor_sync_o(sensor_sync_o), 
		.walk_request_i(walk_request_i), 
		.WR_sync_o(WR_sync_o), 
		.reprogram_i(reprogram_i), 
		.prog_sync_o(prog_sync_o), 
		._rst_i(_rst_i),
		._sync_rst_o(_sync_rst_o)
	);

	//Instanciacion del clock
	initial begin
	_clk_i = 0;
	forever begin
	_clk_i = ~_clk_i;
	#50;
	end
	end
	
	initial begin
		// Initialize Inputs
		_clk_i = 0;
		sensor_i = 0;
		walk_request_i = 0;
		reprogram_i = 0;
		_rst_i = 0;

		// Wait 200 ns for global reset to finish
		#200;
        
		// Add stimulus here
		sensor_i = 1;
		#60;
		sensor_i = 0;
		#60;
		walk_request_i = 1;
		#60;
		walk_request_i = 0;
		#60;
		reprogram_i = 1;
		#60;
		reprogram_i = 0;
		#60;
	end
      
endmodule

